package com.harry.hr.utils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import org.apache.commons.lang.StringEscapeUtils;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

public class StringUtil {

	/**
	 * 判断字符串是否为空
	 * @param args 要判断的字符串
	 * @return 是否
	 */
	public static boolean validateNull(String args) {
		if (args == null || args.length() == 0) {
			return true;
		} else {
			return false;
		}
	}
	
	/**
	 * 判断表单是否为空或者值为0的方法
	 * @param args 要判断的字符串
	 * @return 返回布尔值，如果为真则表示的确字符串空或者0，如果为假则表示字符串非0非空
	 */
	public static boolean validateNullorZero(String args) {
		if (args == null || args.length() == 0||Integer.parseInt(args)==0) {
			return true;
		} else {
			return false;
		}
	}
	
	
	
	

	/**
	 * 判断
	 * @param source
	 * @param target
	 * @return
	 */
	public static String chanageNull(String source, String target) {
		if (source == null || source.length() == 0 || source.equalsIgnoreCase("null")) {
			return target;
		} else {
			return source;
		}
	}

	/**
	 * 将字符串HTML编码
	 * @param input
	 * @return 编码过的字符串
	 */
	public static String htmlEncode(String input) {
		return StringEscapeUtils.escapeHtml(input);
	}
	
	
	/**
	 * 将字符串HTML解码
	 * @param input
	 * @return 正常字符串
	 */
	public static String htmlDecode(String input) {
		return StringEscapeUtils.unescapeHtml(input);
	}
	/**
	 * 将字符数组转换成16进制字符串
	 * @param b 要转换的字符数组
	 * @return 16进制字符串
	 */
	public static String byte2Hex(byte[] b){
	    String hs="";
	    String stmp="";
	    for (int n=0; n<b.length; n++){
	        stmp=(java.lang.Integer.toHexString(b[n] & 0xFF));
	        if (stmp.length()==1) hs=hs+"0"+stmp;
	            else hs=hs+stmp;
	    }
	    return hs;
	}
	/**
	 * MD5 方式加密
	 * @param str 要加密的字符串
	 * @return 已加密的字符串
	 * @throws NoSuchAlgorithmException 没有MD5加密方式的异常
	 */
	public static String md5(String str){
			MessageDigest md5=null;;
			try {
				md5 = MessageDigest.getInstance("md5");
			} catch (NoSuchAlgorithmException e) {
				e.printStackTrace();
			}
			md5.update(str.getBytes());
			return byte2Hex(md5.digest());
	}
	
	
	/**
	 * 为照片构造一个随机的名字
	 * 
	 * @param extendName
	 *            文件扩展名
	 * @return 返回一个随机图片名称
	 */
	public static String creatRandomImageName(String extendName) {
		Date date = new Date();
		SimpleDateFormat format = new SimpleDateFormat("yyyyMMddkkmmss");
		String sdate = format.format(date);
		Random random = new Random();
		int number = random.nextInt(999999999);
		String randomImageName = "person" + sdate + number + extendName;
		return randomImageName;
	}
	
	/**
	 * 产生一个人员档案信息随机编号
	 * 
	 * @return
	 */
	public static String createRandomPersonFileId() {
		Date date = new Date();
		// 年+月+日+时+分+秒+毫秒
		SimpleDateFormat format = new SimpleDateFormat("yyyyMMddkkmmssSS");
		String sdate = format.format(date);
		Random random = new Random();
		int number = random.nextInt(999999999);
		String randomImageName = "HR" + sdate + number;
		return randomImageName;
	}
	
	/**
	 * 随机产生一个薪酬发放单编号
	 * @return
	 */
	public static String createRandomMoneyPaymentId() {
		Date date = new Date();
		// 年+月+日+时+分+秒+毫秒
		//SimpleDateFormat format = new SimpleDateFormat("yyyyMMddkkmmssSS");
		SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
		String sdate = format.format(date);
		Random random = new Random();
		int number = random.nextInt(999999999);
		String randomImageName = "HR" + sdate + number;
		return randomImageName;
	}
}